package com.ddstation.onsitelaw.service;


import com.ddstation.onsitelaw.entity.AccountSaveEntity;
import com.ddstation.onsitelaw.model.AccountModel;
import com.ddstation.onsitelaw.utils.PageResult;

import javax.servlet.http.HttpServletRequest;
import java.util.HashMap;


/**
 * @author 陆青龙
 */
public interface AccountService {

    /**
     * 获取登录
     *
     * @param loginUser     账号
     * @param loginPassword 密码
     * @return AccountModel
     */
    AccountModel login(String loginUser, String loginPassword);

    /**
     * 判断用户是PC端和还是APP端登陆
     *
     * @param request
     */
    String judgeIsMobile(HttpServletRequest request);

    /**
     * 修改密码
     *
     * @param supervisorId 用户ID
     * @param newPassword  新密码
     */
    void updatePassword(Integer supervisorId, String newPassword);

    /**
     * 修改监管区域
     *
     * @param supervisorId  用户ID
     * @param institutionId 监管区域ID
     */
    void updateInstitutionId(Integer supervisorId, String institutionId);

    /**
     * 根据账号ID查询账户
     *
     * @param id 账号ID
     * @return AccountModel
     */
    AccountModel selectById(Integer id);

    /**
     * 根据账号名称查询账户
     *
     * @param loginUser 账号名称
     * @return AccountModel
     */
    AccountModel selectByLoginUser(String loginUser);

    /**
     * 根据账号ID删除账户
     *
     * @param id 账号ID
     * @return int
     */
    int deleteById(Integer id);

    /**
     * 添加信息到supervisor表
     *
     * @param saveEntity 保存信息实体
     */
    void saveSupervisor(AccountSaveEntity saveEntity);

    /**
     * 添加信息到institution_supervisor表
     *
     * @param saveEntity 保存信息实体
     */
    void saveInstitutionSupervisor(AccountSaveEntity saveEntity);


    /**
     * 账户信息列表
     *
     * @param paramMap
     * @return
     */
    PageResult selectSupervisors(HashMap paramMap);

    /**
     * 管理员和监察员列表
     *
     * @param paramMap
     * @return
     */
    PageResult selectManagerAndSupervisors(HashMap paramMap);
}